package parser

import (
	"fmt"
	"strings"
	"z-lang/cmd"
)

// level 层级
var level = 0

// TraceIdentPlaceHolder 跟踪标识占位符
const TraceIdentPlaceHolder = "\t"

func identLevel() string {
	return strings.Repeat(TraceIdentPlaceHolder, level-1)
}
func tracePrint(msg string) {
	fmt.Printf("%s%s\n", identLevel(), msg)
}
func incIdent() { level = level + 1 }
func decIdent() { level = level - 1 }

// 方法执行追踪函数 - TODO 现在这个方法追踪函数还是太傻逼了，要一个个去写，后续考虑改成类似注解注入？
func traceStart(msg string) string {
	if cmd.Cmd.FuncTrace {
		incIdent()
		tracePrint("BEGIN " + msg)
	}
	return msg
}

// 方法执行追踪函数 - TODO 现在这个方法追踪函数还是太傻逼了，要一个个去写，后续考虑改成类似注解注入？
func traceEnd(msg string) {
	if cmd.Cmd.FuncTrace {
		tracePrint("END " + msg)
		decIdent()
	}
}
